1. Technical Field
This invention generally relates to computer systems, and more specifically relates to apparatus and methods for communicating between computer systems on a network.
2. Background Art
Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. The widespread proliferation of computers prompted the development of computer networks that allow computers to communicate with each other. With the introduction of the personal computer (PC), computing became accessible to large numbers of people. Networks for personal computers were developed that allow individual users and software applications to communicate with each other over the network. One network that has become very popular is the Internet.
A network is typically made up of a combination of hardware and software. For example, for two computer systems to communicate over a network, each computer system must have a network interface card (NIC) that is coupled to each other, typically through a router or switch. Once the hardware is in place, a network protocol is selected for communicating between the computer systems. Transmission Control Protocol/Internet Protocol (TCP/IP) is one known network protocol that allows for computer systems to communicate with each other. TCP/IP communicates between computer systems by defining a socket on one computer system that represents a point-to-point connection with a corresponding socket on the other computer system. One computer system may send data to another computer system by writing to its socket that corresponds to the connection between the two. The other computer system then reads the data at the other end from its socket that corresponds to the connection. Once a set of corresponding sockets is defined on two computer systems, the two systems may communicate with each other by writing to and reading from their respective sockets, as described above.
Many different types of computer networks are known in the art. The most dominant form of computer networks in existence today are client-server networks. In a typical client-server network, one or more client computer systems are connected to a network, and one or more server computer systems are coupled to the network. In some client-server networks, the client computer systems are personal computers, while the server computer systems are computer systems that are specialized servers that are optimized for performing the functions of a network server. In general, server computer systems are responsible for performing tasks requested by the client computer systems.
Data transfer from a client computer system to a server computer system is one common task that often needs to be performed. FIG. 2 shows an example of a prior art client-server computer system 200 for sending data from the client applications 210 and 220 on client computer system 202 to the server application 270 on the server computer system 204. A client socket 230 is defined on the client computer system 202, which is coupled to a corresponding server socket 250 on the server computer system 204 via network 245. Sockets 230 and 250 are thus dedicated to communicating between client application 210 and server application 270. In similar fashion, a client socket 240 is defined on the client computer system 202, which is coupled to a corresponding server socket 260 on the server computer system 204 via network 245. Sockets 240 and 260 are thus dedicated to communicating between client application 220 and server application 270.
When the client application 210 has data to send to the server application 270, it writes the data to the client socket 230, which transmits the data via network 245 to server socket 250. The server application 270 may then read the data from the server socket 250. This type of transfer is shown by client application 210 sending data A, B, C and D to client socket 230, which is received by server socket 250 and made available to server application 270. A sample record that includes data A is shown in FIG. 3. In similar fashion, when the client application 220 has data to send to the server application 270, it writes the data to the client socket 240, which transmits the data via network 245 to server socket 260. The server application 270 may then read the data from the server socket 260. This type of transfer is shown by client application 220 sending data V, X, Y and Z to client socket 240, which is received by server socket 260 and made available to server application 270.
In prior art systems such as system 200 shown in FIG. 2, a client application has a single, dedicated socket for communicating with the server application. If a small amount of data needs to be transferred, the data may take only a small portion of the available bandwidth that the socket could support. If a large amount of data needs to be transferred, the data must be serially sent on a single socket, and the time required for the transfer is thus limited by the bandwidth of the single socket. Without a way to use multiple sockets for communicating between a client application and a server application, the computer industry will continue to suffer from the drawbacks of client applications communicating over a single, dedicated socket.